/*
 * Copyright (C) 2008 Alessandro Sivieri <alessandro.sivieri@chimera-bellerofonte.eu>.
 *
 *  This file is part of Daex.
 *
 *  Daex is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  Foobar is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with Foobar.  If not, see <http://www.gnu.org/licenses/>.
 */
package eu.chimera_bellerofonte.tesi.encoding;

/**
 * Questa classe implementa un encoder standard; riceve in ingresso
 * i parametri del programma da utilizzare
 * e trasmette questa informazione agli esecutori materiali del ripping.
 * Questo oggetto viene tipicamente costruito nel momento della richiesta
 * di inizio delle operazioni di coding, quando le informazioni richieste
 * sono complete.
 * 
 * @author  Sivieri Alessandro
 * @author  Vitucci Nicola
 * @version  21/apr/07
 */
public class DefaultEncoder implements Encoder
{
	static final long serialVersionUID = 1L;
	private Program program=null;
	private int quality=-2;
	private String title=null;
	private boolean wave=false;
	
	/**
	 * Costruttore; setta gli attributi di classe con i
	 * valori specificati.
	 * 
	 * @param program il programma di codifica
	 * @param quality la qualita' richiesta
	 * @param title il nome dell'encoder
	 */
	public DefaultEncoder(Program program, int quality, boolean wave, String title)
	{
		this.program = program;
		this.quality = quality;
		this.title=title;
		this.wave=wave;
	}
	
	/**
	 * @see eu.chimera_bellerofonte.tesi.encoding.Encoder#getEncoderProgram()
	 */
	public Program getEncoderProgram()
	{
		return program;
	}

	/**
	 * @see  eu.chimera_bellerofonte.tesi.encoding.Encoder#getQuality()
	 * @uml.property  name="quality"
	 */
	public int getQuality()
	{
		return quality;
	}

	/**
	 * @throws ProgramQualityException 
	 * @see eu.chimera_bellerofonte.tesi.encoding.Encoder#getQualityRange()
	 */
	public int getQualityRange() throws ProgramQualityException
	{
		return program.getQualityRange();
	}

	/**
	 * @see  eu.chimera_bellerofonte.tesi.encoding.Encoder#setQuality(int)
	 * @uml.property  name="quality"
	 */
	public void setQuality(int quality) throws EncoderException
	{
		this.quality=quality;
	}

	/**
	 * @see eu.chimera_bellerofonte.tesi.encoding.Encoder#getEncoderTitle()
	 */
	public String getEncoderTitle()
	{
		return title;
	}

	/**
	 * @see eu.chimera_bellerofonte.tesi.encoding.Encoder#needIntermediateWave()
	 */
	public boolean needIntermediateWave()
	{
		return wave;
	}

}
